﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.ComponentModel;
using System.Collections.Generic;

namespace DocTes.Jerarquias
{
	/// <summary>
	/// Clase datasource usada para manejar directamente los gridviews de carpetas
	/// </summary>
	[DataObject(true)]
	public class DataSourceJerarquiaCarpetas
	{
		/// <summary>
		/// Método de seleccion de carpetas, usa el id de la carpeta padre pero se ingresa como
		/// string para poder usar las propiedades de controles en la página para guardarlo
		/// </summary>
		/// <returns></returns>
		[DataObjectMethod(DataObjectMethodType.Select)]
		static public List<JerarquiaCarpeta> GetCarpetasHijas(string idCarpetaPadre)
		{
			Administrador admin = new Administrador(new FabricaLinqDataSource(), new EntidadLinqDataContext());
			//string nombreCarpetaBase = "";// "CarpetaBase_" + Page.Request.Params.Get("idCliente") + "_" + Page.Request.Params.Get("idProyecto");

			List<IEntidadLinqJerarquiaCarpeta> listaCarpetas = admin.GetDataSourceReadOnlyCollectionCarpetasHijas(new Guid(idCarpetaPadre)).ToList();

			admin.Dispose();
			List<JerarquiaCarpeta> listaJerarquiaCarpetas = new List<JerarquiaCarpeta>();
			foreach (IEntidadLinqJerarquiaCarpeta item in listaCarpetas)
			{
				listaJerarquiaCarpetas.Add((JerarquiaCarpeta)item);
			}
			return listaJerarquiaCarpetas;
		}

		/// <summary>
		/// Método de actualización de carpeta
		/// </summary>
		/// <returns></returns>
		[DataObjectMethod(DataObjectMethodType.Update)]
		static public void UpdateJerarquiaCarpeta(JerarquiaCarpeta jerarquiaCarpeta)
		{
			Administrador admin = new Administrador(new FabricaLinqDataSource(), new EntidadLinqDataContext());

			admin.ActualizarJerarquiaCarpeta(jerarquiaCarpeta);
			
			admin.Dispose();


		}

		/// <summary>
		/// Método de borrado de carpeta
		/// </summary>
		/// <returns></returns>
		[DataObjectMethod(DataObjectMethodType.Delete)]
		static public void DeleteJerarquiaCarpeta(JerarquiaCarpeta jerarquiaCarpeta)
		{
			Administrador admin = new Administrador(new FabricaLinqDataSource(), new EntidadLinqDataContext());

			admin.BorrarJerarquiaCarpeta(jerarquiaCarpeta.Id);

			admin.Dispose();


		}


	}
}
